#ifndef __BSP_LED_H__
#define __BSP_LED_H__

#include "pinctrl.h"
#include "soc_osal.h"
#include "gpio.h"

#define LED_MAX_NUM 2 // LED数量

// LED设备ID号定义
typedef enum
{
    LED1 = 0,
    LED2,
    LED_ALL, // all led
} led_id_t;

// LED状态定义
typedef enum
{
    LED_OFF = GPIO_LEVEL_LOW,
    LED_ON = GPIO_LEVEL_HIGH,
} led_state_t;

// LED控制接口
/**
 * @brief  初始化LED设备。
 * @param  [in] led_id 需要初始化的led设备id号，注意"LED_ALL"不可用， 参考 @ref led_id_t 。
 * @param  [in] pin led设备使用的GPIO引脚， 参考 @ref pin_t 。
 * @retval ERRCODE_SUCC 成功。
 * @retval Other        失败，参考 @ref errcode_t 。
 */
errcode_t bsp_led_init(led_id_t led_id, pin_t pin);

/**
 * @brief  设置LED状态。
 * @param  [in] led_id 需要初始化的led设备id号， 参考 @ref led_id_t 。
 * @param  [in] state led设备需要设置的状态， 参考 @ref led_state_t 。
 * @retval ERRCODE_SUCC 成功。
 * @retval Other        失败，参考 @ref errcode_t 。
 */
errcode_t bsp_led_set_state(led_id_t led_id, led_state_t state);

/**
 * @brief  翻转LED状态。
 * @param  [in] led_id 需要初始化的led设备id号， 参考 @ref led_id_t 。
 * @retval ERRCODE_SUCC 成功。
 * @retval Other        失败，参考 @ref errcode_t 。
 */
errcode_t bsp_led_toggle(led_id_t led_id);

#endif // !__BSP_LED_H__
